# 内置函数-类型转换

# ord：返回Unicode字符对应的整数
o1, o2 = ord('侯'), ord('a')
print(o1, o2)  # 20399 97

# chr：返回整数所对应的Unicode字符
c1, c2 = chr(106), chr(20111)
print(c1, c2)  # j  亏

# bin：将整数转换成2进制字符串
# oct：将整数转化成8进制数字符串
# hex：将整数转换成16进制字符串
b1, b2, b3 = bin(8), oct(8), hex(8)
print(b1, b2, b3)  # 0b1000 0o10 0x8

# tuple：根据传入的参数创建一个新的元组
t1, t2 = tuple(), tuple('1234')  # 默认空元组
t3 = tuple([1, 2, 3])  # 必须传入可迭代对象
print(t1, t2, t3)         # () ('1', '2', '3', '4') (1, 2, 3)

# list：根据传入的参数创建一个新的列表
l = list('1234')  # 必须传入可迭代对象,没有生成空的列表
print(l)  # ['1', '2', '3', '4']

# dict：根据传入的参数创建一个新的字典
d1 = dict(a=1, b=2)  # 可传键值对
d2 = dict((('a', 1), ('b', 2)))  # 可迭代对象
print(d1, d2)  # {'a': 1, 'b': 2} {'a': 1, 'b': 2}

# set：根据传入的参数创建一个新的集合
s1 = set('abcd')  # 默认空集合 {}
s2 = set(range(4))
print(s1, s2)  # {'d', 'a', 'b', 'c'} {0, 1, 2, 3}
# frozenset：根据传入的参数创建一个新的不可变集合
# enumerate：根据可迭代对象创建枚举对象
e = enumerate('侯征')
list1 = list(e)
print(list1)  # [(0, '侯'), (1, '征')]

# range：根据传入的参数创建一个新的range对象
r = range(5)   # 0-4 不包含5
r1 = range(5, 10)  # 5-9 不包含10
r2 = range(1, 10, 2)  # 1-9,每个数间隔2
print(r, r1, r2)  # range(0, 5) range(5, 10) range(1, 10, 2)
for i in r2:
    print(i)  # 1,3,5,7,9
# iter：根据传入的参数创建一个新迭代器,可将可迭代对象转化迭代器
# slice：根据传入的参数创建一个新的切片对象
s3 = slice(1, 5)
s4 = slice(1, 10, 3)
l11 = [1, 2, 3, 4, 5, 6]
print(l11[s3])  # 对集合进行切片 [2, 3, 4, 5],可直接简写 了l11[1:5]
